1. Technical Field
The present invention relates to an improved data processing system. In particular, the present invention relates to debugging, tracing, and logging of applications in a data processing system. Still more particularly, the present invention relates to on demand debugging, tracing and logging of applications in a data processing system without knowledge of a process identifier or inserting waits in the applications.
2. Description of Related Art
In modern development environment, software developers often face different challenges with regard to debugging or tracing programs that they developed. Using existing integrated development environments (IDEs), software developers may debug their programs in several ways. One way is by initiating a debug session manually and setting an ‘On load’ break point for the process of interest in the program during the debug session. A break point is a location, such as a line in the source code, where a software developer may want to begin debugging or tracking. Another way of debugging is by setting break points for the process of interest ahead of time and initiating the debug session, which pauses execution of the program when the break points are encountered.
However, these approaches require software developers to have knowledge of a process identifier of the process of interest prior to initiating the debug session. Particularly, software developers who are developing programs within a Web application environment or a generic server-based environment face even more challenges in identification of this process identifier, since a Web server may spawn new processes to handle user requests which have different process identifiers that are not known by software developers and at times that are unknown to software developers.
Facing this challenge, some software developers modify their program code by inserting waits. A wait is a method that causes the current process to wait until notification by another process. With waits inserted, the process identifier may be identified and the debug process may be initiated when a new process is created by the Web server. However, this approach is not efficient for software developers, because the program code has to be modified in order to determine the process identifier.
Traditionally, software developers start the debugging or tracing of applications at some time earlier than a problem area, which affects overall system performance. In addition, current IDEs only allow software developers to specify artifacts, such as, for example, servlets or enterprise Java™ beans, to be registered by the system, such that when these artifacts are executed, the software developers are notified. However, there is no existing mechanism that allows software developers to specify more granular units of execution or entries to be registered with the system. A unit of execution may be a library, a program or a module.
Furthermore, there is no existing mechanism that allows software developers to specify a user of interest in a single server environment accessed by multiple users, who wants to perform debugging, tracing or logging of applications.
Therefore, it would be advantageous to have an improved method and apparatus for debugging, tracing, and logging of applications or programs without the knowledge of the process identifier ahead of time and inserting waits in the applications. It would also be advantageous to have an improved method and apparatus that allows software developers to start debugging, tracing or logging when specific programs or modules are invoked or when specific libraries are loaded.
Moreover, it would be advantageous to have an improved method and apparatus to keep track of a specific user when multiple users are debugging within a single server environment, as long as the server spawns different processes for different user requests.